/คลิก คู่มือ และการประกอบ
/////////////
#include <PS2X_lib.h> // เรียกใช้งานไลบรารีสำหรับจอยสติ๊ก PS2
#include <Servo.h>
Servo myservo1;////ตีวยืด
Servo myservo2;////ตีวคีบ
int potpin = 0;
int pos1=90;
int pos2=90;
int DLS=50;
const int Pin_A = 4;
const int Pin_B = 5;
const int Pin_C = 6;
const int Pin_D = 7;
const int Pin_E = 8;
const int Pin_F = 9;
const int Pin_G = 10;
const int Pin_H = 11;
///////////////////////////////////////////////////////---------------------------------
int lelay = 2;
#define PS2_DAT A1 //
#define PS2_CMD A2 //
#define PS2_CLK A3
#define PS2_SEL A4 //
PS2X ps2x; // ประกาศตัวแปรสำหรับจอยสติ๊ก PS2
/////////////////////////////////////////////
int posA = 20 ;
void setup()
{
pinMode(Pin_A, OUTPUT);
pinMode(Pin_B, OUTPUT);
pinMode(Pin_C, OUTPUT);
pinMode(Pin_D, OUTPUT);
pinMode(Pin_E, OUTPUT);
pinMode(Pin_F, OUTPUT);
pinMode(Pin_G, OUTPUT);
pinMode(Pin_H, OUTPUT);
myservo1.attach(2); //ตัวยืด
myservo2.attach(3);//ตัวคีบ
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
delay(100);
Serial.begin(9600);
Serial.println("Connecting"); // แสดงข้อความเพื่อแจ้งว่า กำลังเชื่อมต่อกับจอยสติ๊ก
while (true) // วนรอการเชื่อมต่อกับจอยสติ๊ก
{
int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false);
if (error == 0) // กรณีที่เชื่อมต่อได้ Error = 0
{
Serial.println("OK"); // แสดงข้อความว่า เชื่อมต่อกับจอยสติ๊กเรียบร้อยแล้ว
delay(1000); // หน่วงเวลา 1 วินาที
break; // ออกจาก while(true)
}
delay(500); // หน่วงเวลา 500 มิลลิวินาทีเพื่อรอการเชื่อมต่อครั้งต่อไปในกรณีที่เชื่อมต่อไม่สำเร็จ
}
}
void loop()
{
ps2x.read_gamepad(false, false); // อ่านข้อมูลจาก PS2 Controller
////////////////////////////////----------------------------------------------------
if (ps2x.Button(PSB_CIRCLE)) // ถ้าปุ่มวงกลมถูกกด
{
Serial.println("O");
if(pos1<=0)
{
pos1=0;
}
else
{
pos1=pos1-5;
myservo1.write(pos1);
delay(100);
}
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_CROSS)) // ถ้าปุ่มกากบาทถูกกด
{
Serial.println("X");
if(pos2<=60)
{
pos2=60;
}
else
{
pos2=pos2-5;
myservo2.write(pos2);
delay(100);
}
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_SQUARE)) // ถ้าปุ่มสี่เหลี่ยมถูกกด
{
Serial.println("S");
if(pos2>=180)
{
pos2=180;
}
else
{
pos2=pos2+5;
myservo2.write(pos2);
delay(100);
}
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_TRIANGLE)) // ถ้าปุ่มสามเหลี่ยมถูกกด
{
Serial.println("T");
if(pos1>=180)
{
pos1=180;
}
else
{
pos1=pos1+5;
myservo1.write(pos1);
delay(100);
}
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_L1)) // ถ้าปุ่ม L1 ถูกกด
{
Serial.println("L1");
LL();//หมุนซ้าย
}
else if (ps2x.Button(PSB_L2)) // ถ้าปุ่ม L2 ถูกกด
{
Serial.println("L2");
LL();//หมุนซ้าย
}
else if (ps2x.Button(PSB_R1)) // ถ้าปุ่ม R1 ถูกกด
{
Serial.println("R1");
RR();//หมุนขวา
}
else if (ps2x.Button(PSB_R2)) // ถ้าปุ่ม R2 ถูกกด
{
Serial.println("R2");
RR();//หมุนขวา
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_START)) // ถ้าปุ่ม Start ถูกกด
{
Serial.println("Start");
DLS=50;// แสดงข้อความว่า Start
}
else if (ps2x.Button(PSB_SELECT)) // ถ้าปุ่ม Select ถูกกด
{
Serial.println("Select");
DLS=10;
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_PAD_UP)) // ถ้าปุ่ม Up ถูกกด
{
Serial.println("UP");
DD();//เดินหน้า
}
else if (ps2x.Button(PSB_PAD_DOWN)) // ถ้าปุ่ม Down ถูกกด
{
Serial.println("DOWN");
BK();//ถอย
}
else if (ps2x.Button(PSB_PAD_LEFT)) // ถ้าปุ่ม Left ถูกกด
{
Serial.println("LEFT");
RRR();//สไลด์ขวา
}
else if (ps2x.Button(PSB_PAD_RIGHT)) // ถ้าปุ่ม Right ถูกกด
{
Serial.println("RIGHT");
LLL();//สไลด์ซ้าย
}
////////////////////////////////----------------------------------------------------
else
{
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
delay(10);
}
delay(10);
}
//////////////////////////////////
////////////////////////////////----------------------------------------------------เดินหน้า
void DD()
{
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, HIGH);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, HIGH);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, HIGH);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, HIGH);
delay(DLS);
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
delay(10);
}
////////////////////////////////----------------------------------------------------ถอยหลัง
void BK()//ถอย
{
digitalWrite(Pin_A, HIGH);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, HIGH);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, HIGH);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, HIGH);
digitalWrite(Pin_H,LOW);
delay(DLS);
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
delay(10);
}
////////////////////////////////----------------------------------------------------หมุนขวา
void RR()//หมุนขวา
{
digitalWrite(Pin_A, HIGH);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, HIGH);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, HIGH);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, HIGH);
delay(DLS);
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
delay(10);
}
////////////////////////////////----------------------------------------------------หมุนซ้าย
void LL()//หมุนซ้าย
{
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, HIGH);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, HIGH);
digitalWrite(Pin_E, HIGH);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, HIGH);
digitalWrite(Pin_H, LOW);
delay(DLS);
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
delay(10);
}
////////////////////////////////----------------------------------------------------สไลด์ขวา
void RRR()//
{
digitalWrite(Pin_A, HIGH);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, HIGH);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, HIGH);
digitalWrite(Pin_G, HIGH);
digitalWrite(Pin_H, LOW);
delay(DLS);
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
delay(10);
}
////////////////////////////////----------------------------------------------------สไลด์ซ้าย
void LLL()//
{
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, HIGH);//
digitalWrite(Pin_C, HIGH);
digitalWrite(Pin_D, LOW);//
digitalWrite(Pin_E, HIGH);
digitalWrite(Pin_F, LOW);//
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, HIGH); //
delay(DLS);
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
delay(10);